iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
自我挑戰組

一路side project - 學習筆記系列 第 6

[Day 6] GU價格提醒系統 (1) - 需求拆解、資料源盤點

  • 分享至 

  • xImage
  •  

這次的 side project 是要把 GU 價格追蹤/最低價通知 做成可用的小服務:能抓價 → 存歷史 → 視覺化 → 低價通知(LINE)。

今天先來擬定作法吧


1) 專案要解決什麼?

  • 痛點:GU 商品常週更價、活動價短暫,手動追價格很累、也容易錯過低價。且雖然現有網站也有查看的歷史價格的功能,但希望能有達設定價格的低價提醒。

  • 目標:自動追蹤指定商品歷史,偵測新低或短期大幅下降就通知;同時提供一個極簡頁面看折線圖與最低價點。

  • 量化成功條件

    • 追蹤 ≥ 50 件商品、每日累積 ≥ 500 筆價格點。

    • 正確偵測 最低價與 24h 降幅 ≥ X%(誤報率 < 5%)。

    • 前端折線圖可選日期範圍,會標示最低價點。

2) 範圍(Scope)

這個專案要做的:

  • 指定商品清單(product_code + URL)。

  • 以排程每日多次抓價,寫入資料庫保留歷史。

  • 兩種規則任一觸發就通知:

    • price <= threshold_price

    • 24h drop >= Y%(含去抖動、冷卻)

    • 一頁式折線圖(搜尋、時間範圍、最低價標記)。

  • Nice-to-have (如果未來有時間的話,再去雕細部)

    • 多品類看板、關鍵字訂閱、Discord/Email 多通道、代理池、分散式抓取。

3) 資料源與欄位

[注!]不論抓頁面或 API,務必節流、重試與退避

核心欄位

product_code(唯一)、name、url、category

price(TWD)、ts(抓取時間戳)、source_url(溯源)

衍生:min_price、min_price_ts、last_price、price_count

資料庫的設計、有什麼其他欄位細節 本米也還沒完全想好 等做到那再寫上來

4) 系統流程


[ Scheduler (n8n / Cron / GitHub Actions) ]
                |
                v
         [ Scraper (Python) ]
                |
         (append + upsert)
                |
                v
     [ PostgreSQL: price_ticks, product_summary ]
                |
      +---------+----------+
      |                    |
      v                    v
[ Notifier: LINE ]   [ Web API + Chart 前端 ]
  • 單向資料流:抓 → 存 → 用,避免抓取與通知互相耦合。

  • 規則:資料入庫後以 SQL/程式判斷 → 產出事件 → 通知。

  • 本米現在是用 n8n + docker 來架設/自動化流程,視情況更動

5) 風險與法遵

  • 請求頻率:設定合理間隔、加上節流與退避,尊重網站服務品質。

  • 使用者資料:本專案不處理個資;通知僅對自己/團隊。

聲明:僅作學習研究用途,不作商用;若違反對方條款請自行停用。


上一篇
[Day 5] 健康管理 x Line Bot - 你今天POO了嗎 - 計屎者 (實作篇)
下一篇
[Day 7] GU價格提醒系統 (2) - 專案的環境架設 ( Docker + n8n )
系列文
一路side project - 學習筆記11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言